From: Bernard Brady <[email-masked]>
Date: Wed, 25 Aug 93 14:35:01 EDT

All,

This is one of the states specified in the RFC which  needs to be
clarified.  

4.2.2.2   RESOLVE_PENDING State

 Event                  Action(s)              Next State
     -----                  ---------              ----------
Receive DATAFRAME      DLC_DGRM
DLC_DL_STARTED         Send ICANREACH         CIRCUIT_PENDING
DLC_ERROR                     DISCONNECTED
DLC_DGRM           If NB_Name_Recognized: If NB_Name_Recognized:
                                 Send NETBIOS_NR           CIRCUIT_PENDING
                                  (See note),              
                                Else:
                                 Send DATAFRAME

The RESOLVE_PENDING state is entered upon receipt of a CANUREACH
message or a NETBIOS_NQ message by the target DLS.  In the former case,
a data link is started, causing a Test command to be sent by the DLC. 
In the later case, a NB_Name_Query frame is sent.  This frame is
directed to a group MAC address.

Any CANUREACH messages received in the RESOLVE_PENDING state will be
responded to if a DLC_DL_STARTED signal is received.  The Data Link
Switch may also update its topology information based upon the origin
MAC address information in each CANUREACH message.

Upon the receipt of a DLC_DL_STARTED signal in the RESOLVE_PENDING
state, the Data Link Switch may update its topology table base upon the
remote MAC address information.  The ICANREACH message should be
returned to all Data Link Switches that had sent a CANUREACH message. In
a similar fashion, the Data Link Switch may update its topology table
upon the receipt of a NB_Name_Recognized frame and a NETBIOS_NR message
will be returned to all Data Link Switches that have sent a NETBIOS_NQ
message.

The RESOLVE_PENDING state is exited once the data link has been started
(i.e., a DLC_DL_STARTED signal is received as a result of a Test
response received by the DLC) or a NB_Name_Recognized frame is received
(i.e., a DLC_DGRM signal is received).  The target Data Link Switch will
then enter the CIRCUIT_PENDING state.

    Note:  The IBM 6611 will also send a Test command in order to
    start the data link to the station that responded to the Name
    Query frame (i.e., a DLC_START_DL will be issued). B

By what I read in the second paragraph the following event and action
should be added to the resolve pending FSM section.

Additons:

    Event                               Action(s)               Next State
     -----                                   ---------            ------- 

Receive CANUREACH      Queue Response owed

This  seems to identify a hole in the FSM.  In the case where two
origin DLSw are connected to the same LAN and send CANUREACH requests to
the same target DLSw  then they will both receive a ICANREACH messge by
what is written in the third paragraph.  They will then both generate a
REACH ACK. to the target. This will then cause both origin DLSWs to
think a circuit is established.  This then duplicates data from the
to rigin  to the target

Now if I only read the FSM then only the first CANUREACH is acted upon
and all others are ignored and the issue goes away.  My take is that the
FSM is correct and the second and third paragraphs need to be updated
or deleteds.  Am I correct in my interpretation of the Resolve Pending
FSM?

Bernie